1. Field of the Invention
The present invention relates generally to computer generated animation, and in particular, to a method, apparatus, and article of manufacture for controlling/generating the animation of a 3D skeletal mesh in real time using kinematic constraints.
2. Description of the Related Art
When creating video games, movies, television shows, etc. that contain animation, it is desirable to animate characters and/or skeletons that have different joints/bones. Prior art systems require animators to animate each joint/bone one-by-one for every frame. Thus, with approximately 24 frames per second, the number of animations required is voluminous. Further, with video games, the animation is actually rendered/displayed as the game player is moving a character/playing the game in real time. Accordingly, prior art systems require the animator to predict/account for an almost unlimited number of situations that will occur (e.g., in a game) (i.e., to account for the different animations that will be required). What is needed is the ability to specify the type of motion to be automatically generated on a character without specifying individual transformations for all separated joints, in a manner that provides an organic appearance, is customizable, easy to control, and can be performed in real-time. In general, the prior art fails to solve the problem of applying a set of weighted inverse kinematics constraints globally to a three-dimensional (3D) skeletal mesh to easily control (or generate) its animation in real time.
To better understand the problems and deficiencies of the prior art, a brief description of the HUMANIK™ CHARACTER SOLVER, CAT™, IKINEMA™, and FINALIK™ products may be useful.
One prior art system (e.g., the HUMANIK™ CHARACTER SOLVER that is part of the MOTIONBUILDER™ and MAYA™ applications) only works on humanoid skeletal meshes and does not support extensive customization, and requires an extensive and difficult setup. Alternative prior art inverse kinematic solvers (e.g., the CAT™ application) may partially solve the problems identified above but fail to provide a real-time solution.
The prior art IKINEMA™ product provides a full body inverse kinematics solver that is able to partially solve the problems identified above. However, the IKINEMA™ product is hard to control, slow to process (global optimization problem), and the resulting animation does not look organic. Further, tuning the IKINEMA™ product is difficult. In addition, the IKINEMA™ product requires a user to manually build a creature (e.g., a character or skeleton) using a single base level component that is repeated as many times as is required followed by the manual configuration of properties to the same component in order to define a desired behavior. Such a process is slow, confusing, and requires a substantial user knowledge base. In this regard, utilizing low-level semantics and the same component with different properties to define and simulate the relationships between different components is processor/CPU expensive compared to that of embodiments of the present invention.
The prior art FINALIK™ product provides a full body inverse kinematics solver that is also able to partially solve the problems identified above. However, the FINALIK™ product provides limited functionality and cannot handle any skeletal mesh hierarchy.